
QBoxLayout 类将子代部件们水平或竖直地排列起来。
QBoxLayout拿着它(从亲代布局器或 parentWidget ()(亲代部件))获得的空间,分割成几個盒子(boxes),再让每个被管理的部件填满其中一個盒子。
如果QBoxLayout的方向是 Qt::Horizontal (水平),则盒子们被放置在一行中,并且分配好尺寸。每個部件(或是其它的盒子)最少会获得它的最小尺寸,最多会获得它的最大尺寸。任何额外的空间都会按照拉伸因子来分配共享(下面会细说)。
如果QBoxLayout 的方向是 Qt::Vertical (竖直),则盒子们被放置在一列中,同样会分配好尺寸。
最简单的创建QBoxLayout 的方式就是使用其中一個便利类,比如 QHBoxLayout (用于 Qt::Horizontal 盒子)或 QVBoxLayout (用于 Qt::Vertical 盒子)。妳还可以直接使用QBoxLayout 构造函数,并且指定方向为 LeftToRight 、 RightToLeft 、 TopToBottom 或 BottomToTop 。
如果这個QBoxLayout 不是顶级的布局器的话(也就是说,它并没有管理当前部件的全部区域及子代对象),那么妳必须在对它做任何事之前先将它添加到一個亲代布局器中。一般的添加布局器的方法就是调用parentLayout-> addLayout ()。
一旦妳做完咯这個,妳就可以用四個函数中的一個来向这個QBoxLayout 中添加盒子:
•. addWidget (),添加一個部件到这個QBoxLayout 中,并且设置其拉伸因子。(拉伸因子的方向与盒子的排列方向一致。)
•. addSpacing (),添加一個空盒子;这是用来创建漂亮大方的对话框的函数之一。继续看下面的内容以了解如何设置边距(margins)。
•. addStretch (),添加一個空的可拉伸的盒子。
•. addLayout (),添加一個包含另一個 QLayout 的盒子,并且设置它的拉伸因子。
使用 insertWidget ()、 insertSpacing ()、 insertStretch ()或 insertLayout ()来在布局器中的指定位置插入一個盒子。
QBoxLayout还包含两个边距宽度:
•. setContentsMargins (),设置这個部件的每個方向上的外边框的宽度。这是在这個QBoxLayout 的四個方向上的保留空间的宽度。
•. setSpacing (),设置相邻的盒子之间的宽度。(妳可使用 addSpacing ()来在某個特定的位置保留更多空白。)
边距的默认值是由风格提供的。大部分Qt 风格设置的默认边距是:对于子代部件为9,对于窗口为11.空白的默认值与顶级布局器的边距或亲代布局器空白默认值相同。
要想从布局器中删除一个部件,则调用 removeWidget ()。对某個部件调用 QWidget::hide ()也会起到删除部件的效果,除非又调用 QWidget::show ()。
一般情况下,妳应该会使用 QVBoxLayout 和 QHBoxLayout ,而不是QBoxLayout,因为它们方便得多。
参考 QGridLayout 、 QStackedLayout 和 布局管理 。
HxLauncher: Launch Android applications by voice commands